# uncompyle6 version 3.2.3
# Python bytecode 3.6 (3379)
# Decompiled from: Python 3.6.8 |Anaconda custom (64-bit)| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: email\encoders.py
"""Encodings and related functions."""
__all__ = ["encode_7or8bit", "encode_base64", "encode_noop", "encode_quopri"]
from base64 import encodebytes as _bencode
from quopri import encodestring as _encodestring


def _qencode(s):
    enc = _encodestring(s, quotetabs=True)
    return enc.replace(b" ", b"=20")


def encode_base64(msg):
    """Encode the message's payload in Base64.
    
    Also, add an appropriate Content-Transfer-Encoding header.
    """
    orig = msg.get_payload(decode=True)
    encdata = str(_bencode(orig), "ascii")
    msg.set_payload(encdata)
    msg["Content-Transfer-Encoding"] = "base64"


def encode_quopri(msg):
    """Encode the message's payload in quoted-printable.
    
    Also, add an appropriate Content-Transfer-Encoding header.
    """
    orig = msg.get_payload(decode=True)
    encdata = _qencode(orig)
    msg.set_payload(encdata)
    msg["Content-Transfer-Encoding"] = "quoted-printable"


def encode_7or8bit(msg):
    """Set the Content-Transfer-Encoding header to 7bit or 8bit."""
    orig = msg.get_payload(decode=True)
    if orig is None:
        msg["Content-Transfer-Encoding"] = "7bit"
        return
        try:
            orig.decode("ascii")
        except UnicodeError:
            msg["Content-Transfer-Encoding"] = "8bit"
        else:
            msg["Content-Transfer-Encoding"] = "7bit"


def encode_noop(msg):
    """Do nothing."""
    pass
